#ifndef MARKETWINDOW_H
#define MARKETWINDOW_H

#include <QDialog>
#include <QVector>
#include <QPointF>
#include <QtCharts>
#include "bidwindow.h"

QT_BEGIN_NAMESPACE
namespace Ui { class MarketWindow; }
QT_END_NAMESPACE

// using namespace QtCharts;

class MarketWindow : public QDialog
{
    Q_OBJECT

public:
    MarketWindow(QWidget *parent = nullptr);
    ~MarketWindow();
    void onChartMouseMove(QMouseEvent *event);
    // 设置竞价数据
    void setBidData(const QVector<PriceQuantity> &supplierData, 
                   const QVector<PriceQuantity> &consumerData);
    
    // 获取交点坐标
    QPointF getIntersectionPoint() const { return intersectionPoint; }

signals:
    // 当找到交点时发出信号
    void intersectionFound(const QPointF &point);

private:
    Ui::MarketWindow *ui;
    QChart *chart;                  // 图表
    QLineSeries *supplierSeries;    // 供电端曲线
    QLineSeries *consumerSeries;    // 用户端曲线
    QScatterSeries *intersectionSeries; // 交点标记
    QValueAxis *axisX;              // X轴（电量）
    QValueAxis *axisY;              // Y轴（电价）
    QPointF intersectionPoint;      // 交点坐标
    double supplierIntegral;  // 供电端积分
    double consumerIntegral;  // 用户端积分
    // 计算两条曲线的交点
    void calculateIntersection();
};
#endif // MARKETWINDOW_H
